package com.liuyk.commonlib.web.bridge;

import android.content.Context;
import android.webkit.ValueCallback;
import android.webkit.WebView;

public interface BasisView {

    Context getTarget();

    /**
     * 获得页面上下文
     */
    WebView getWebView();

    /**
     * 当各个handler处理不了时，走到额外的处理
     *
     * @param bridgeName
     * @param action
     * @param callbackId
     * @param callbackFunction
     * @param params
     */
    String onExtraBridge(String bridgeName, String action, boolean isSync, String callbackId, String callbackFunction,
                         String params);

    /**
     * @param eventDispatchFunction
     * @param event
     * @param callback
     */
    void eventDispatch(String eventDispatchFunction, String event, ValueCallback callback);

    /**
     * 回调js
     *
     * @param extra
     * @param callbackFunction
     * @param response
     */
    void onJsCallback(String extra, String callbackFunction, String response);

    /**
     * 获得某个流程参数
     *
     * @param key
     * @param defaultValue
     * @param <T>
     * @return
     */
    <T> T getArg(String key, T defaultValue);

    /**
     * 设置流
     *
     * @param key
     * @param value
     * @param <T>
     */
    <T> void putArg(String key, T value);

    /**
     * 删除流程参数
     *
     * @param key
     */
    void removeArg(String key);


    /**
     * 设置web页面标题
     *
     * @param title
     */
    void setTitle(String title);

    /**
     * 关闭页面
     */
    void closeView();

    /**
     * 显示右侧
     */
    void showTitleRightButtons(String callbackId, String callbackFunction, String params);

    /**
     * 执行路由
     *
     * @param url
     */
    void exeRoute(String url, String callbackId, String callbackFunction);


    /**
     * 点击放大图片
     *
     * @param imageUrl
     * @param x
     * @param y
     * @param width
     * @param height
     */
    void openPicture(String imageUrl, int x, int y, int width, int height);


    /**
     * 设置头布局背景
     *
     * @param color
     */
    void setHeadBackground(String color);

    /**
     * 开始加载页面
     */
    void onLoadStart(String url);

    /**
     * 加载进度回调 0~100
     *
     * @param progress
     */
    void onProgressChanged(int progress, String url);
}
